#include<stdio.h>

int main()
{
	int sum, lines, temp, number = -1;//输入的星总数，层数，临时变量，模板星数（吻合星数）
	char symbol;//星字符
	scanf("%d %c",&sum,&symbol);
	for (int i = 1;; i++)
	{
		number += 2 * (2 * i - 1);//求两个奇数，求第一个奇数从1开始，第二个奇数从求得的第一个奇数开始
		if (sum - number<0)break;//*/这个break会有延迟
		lines = i;
		temp = number;//*/解决方法：用一个变量存着还没有改变时的值，在break之后，赋值语句再break之前，起到阻隔作用
	}

	for (int i = 0; i < lines; i++)//从第1行开始，用0表示
	{
		for (int n = i; n>0; n--)//输出空格数与行数相同，直接将行号赋值给另外一个变量，然后自减就行
			printf(" ");
		for (int m = (lines - i) * 2 - 1; m > 0; m--)//最高层数的星总数自减
			printf("%c",symbol);
		printf("\12");
	}
	for (int i = 1; i < lines; i++)//从第2行开始，用1表示
	{
		for (int n = lines - i; n>1; n--)//输出空格数与层数到空格所在行数的距离相同，然后从第二层开始，所以n是大于1，如果大于0会多输出一行
			printf(" ");
		for (int m = 0; m <= i * 2; m++)//第二行有三个星号，第一个从零开始，第三个是在哪里结束？
			printf("%c",symbol);
		printf("\12");
	}
	printf("%d",sum-temp);

	//system("pause");
	return 0;
}
